PROJECT_NAME = myprogram

CXX = g++
# 编译器参数（仅编译时需要的选项）
CXFLAGS = -Wall -Wextra -std=c++11 -Iinclude 
# 链接器参数（库文件需在链接阶段指定，且放在目标文件之后）
LDFLAGS = -llog4cpp -lmysqlclient -lcurl

SRC_DIR = src
BUILD_DIR = build
BIN_DIR = bin

SRCS = $(wildcard $(SRC_DIR)/*.cpp)
OBJS = $(patsubst $(SRC_DIR)/%.cpp,$(BUILD_DIR)/%.o,$(SRCS))

EXECUTABLE = $(BIN_DIR)/$(PROJECT_NAME)  # 建议去掉 .exe 后缀（Linux 下通常不使用）

all: $(EXECUTABLE)

# 链接时添加 LDFLAGS（库参数必须放在目标文件之后）
$(EXECUTABLE): $(OBJS) | $(BIN_DIR)
	$(CXX) $(OBJS) $(LDFLAGS) -o $@  # 关键修正：将 -llog4cpp -lmysqlclient 移到此处

$(BUILD_DIR)/%.o: $(SRC_DIR)/%.cpp | $(BUILD_DIR)
	$(CXX) $(CXXFLAGS) -c $< -o $@

$(BUILD_DIR) $(BIN_DIR):
	mkdir -p $@

clean:
	rm -rf $(BUILD_DIR) $(BIN_DIR)

rebuild: clean all

.PHONY: all clean rebuild
